package com.java.common.base.service;

import java.io.Serializable;

import com.java.common.base.exception.BaseException;

public interface BaseService<T, PK extends Serializable> {
	/**
	 * 单条记录增加
	 *
	 * @param model
	 * @return
	 */
	public PK save(T model);
	/**
	 * 单条记录删除
	 * @param model
	 * @throws BaseException
	 */
	public void delete(T model);
	/**
	 * 单条记录更新
	 *
	 * @param model
	 */
	public void update(T model);

	/**
	 * 单条记录保存或更新
	 *
	 * @param model
	 */
	public void saveOrUpdate(T model);
	/**
	 * 单条记录合并
	 *
	 * @param model
	 */
	public void merge(T model);
	/**
	 * 根据主键查询单条记录
	 *
	 * @param modelClass
	 * @param id
	 * @return
	 */
	public T get(PK id);
	/**
	 * 根据ID批量删除
	 * @param modelClass
	 * @param ids
	 */
	public void delete(PK[] ids);
	
	/**
	 * 根据 排除的id集合删除对象
	 * 对象的主键必须命名为整形id
	 * @param ids
	 */
	//public void deleteModelById(PK[] ids);
}